<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../vue.js"></script>
  </head>
  <body>
    <div id="app">
        <h1>
            我是以容器outerHTML作为模板,count的值是
            <span>{{count}}</span>
        </h1>
    </div>

    <script>
      Vue.config.productionTip = false;

      const vm = new Vue({
        el: "#app",

        //data为vue实例的数据对象
        /*
            当一个组件被定义时, data 必须声明为[返回一个初始数据对象的函数],因为组件可能被用来创建多个实例.如果 data 仍然是一个纯粹的对象,则所有的实例将引用同一个数据对象,他们会互相影响.而创建实例后通过调用 data 中函数返回初始数据得到一个全新的副本数据对象不存在该问题.
        */
        data(){
          return{
            count:0,
          };
        },
      });

      //1.data作为对象的伪代码
      /* 
      //模拟数据
      const data = {
        count: 0,
      }

      //模拟组件复用
      const o1 = data;
      const o2 = data;
      o1.count++; */

      //2.data作为函数的伪代码
      /* 
      //模拟数据
      function data() {
        const a =  {
          count: 0,
        };
        return a;
      }

      //模拟组件复用
      const o1 = data();
      const o2 = data();
      o1.count++; */
      
    </script>
  </body>
</html>
